package com.aiisen.weixin.pay.example;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.aiisen.weixin.pay.bean.PayNotify;
import com.aiisen.weixin.pay.util.SignatureUtil;
import com.aiisen.weixin.pay.util.XMLConverUtil;

/**
 * 支付回调通知
 * 
 * @author LiYi
 */
public class PayNotifyServlet extends HttpServlet {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	private String pay_sign_key; // 微信支付申请人邮箱获取

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		// 获取请求数据
		PayNotify payNotify = XMLConverUtil.convertToObject(PayNotify.class, request.getInputStream());
		// 签名验证
		if (!SignatureUtil.validateAppSignature(payNotify, pay_sign_key)) {
			response.getOutputStream().write("error".getBytes());
		} else {
			String sign_type = request.getParameter("sign_type");
			String input_charset = request.getParameter("input_charset");
			String sign = request.getParameter("sign");
			String trade_mode = request.getParameter("trade_mode");
			String trade_state = request.getParameter("trade_state");// 支付结果 0 成功
			String partner = request.getParameter("partner");
			String bank_type = request.getParameter("bank_type");
			String bank_billno = request.getParameter("bank_billno");
			String total_fee = request.getParameter("total_fee");
			String fee_type = request.getParameter("fee_type");
			String notify_id = request.getParameter("notify_id");
			String transaction_id = request.getParameter("transaction_id");// 交易号
			String out_trade_no = request.getParameter("out_trade_no");
			String attach = request.getParameter("attach");
			String time_end = request.getParameter("time_end");
			String transport_fee = request.getParameter("transport_fee");
			String product_fee = request.getParameter("product_fee");
			String discount = request.getParameter("discount");
			response.getOutputStream().write("success".getBytes());
		}
	}

}
